・――――――――――――― |リファレンス・マニュアル \ |―――――――――――――――――――――――――――――――――――――・ |・―――――――――――――――――――――――――――――――――――・| ||■1.数値および変数■■■■■■■■■■■■■■■■■■■■■■■■■|| |・―――――――――――――――――――――――――――――――――――・| |本言語において、定数、変数、配列、数値                  | |演算および比較演算は1バイト型と2バイト型があり、            | |それぞれの特長を最大限に利用することかできます。             | |以下それぞれについて説明します。                     | |                                     | |(1)1バイト型                              | | コンパイル効率か非常によい(2バイト型の 1.5〜2倍)          | | ●定数                                 | | 10進:0〜 255の範囲で最後に%をつける。                | |  例:PRINT%(251%)                           | |                                     | | 16進:0〜FFの範囲、先頭に$をつけ、最後に%をつける。         | |  例:PRINT%($FF%)                           | |                                     | | ●変数                                 | | 変数名は英字(A〜Z)で始まり、                    | | 英字および数字から成る任心の文字列で、                 | | 長さの制限はない(最後の1文字まで区別可能)。             | | 最後に%をつけることにより1バイト型となる。              | |  例 DATA%:=255%;                           | |                                     | | ●配列                                 | | 配列名は変数と同様                           | | 1バイト配列は引き数も1バイト数値。                  | |  例 B%(3%):=9%;                            | |                                     | | ●数値演算、比演算                           | | ビルトイン・コマンドにおける演算子(表2参照)。            | |                                     | |(2)2バイト型                              | | ●定数                                 | |  10進数:0〜 65535の範囲で何もつけない。               | |   例 PRINT(1234)                           | |  16進数:0〜FFFFの範囲で先頭に$をつける。              | |   例 PRINT($FFFF)                          | |                                     | | ●変数                                 | |  変数名は1バイト型と同様。最後に%はつけない。            | |   例 DATA:=3000;                           | |                                     | | ●配列                                 | |  配列名は2バイト型変数と同様。引き数も2バイト型数値         | |   例 A(100):=100;                          | |                                     | | ●数値演算、比較演算                          | |  ビルトイン・コマンドにおける演算子(表2)を参照。          | |                                     | |注:変数および配列はコマンドと区別するために必ず変数宣言         | |  および配列宣言をしなくてはなりません。                | |  このことについては宣言コマンドを参照。                | |                                     | |・―――――――――――――――――――――――――――――――――――・| ||■2.文法■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■|| |・―――――――――――――――――――――――――――――――――――・| |Adeにはリザーブド・コマンド、システム・コマンド、           | |システム変数、宣言コマンド、ビルトイン・コマンド、            | |擬似コマンドの6種類があります。                     | |                                     | |(1)リザーブド・コマンド                         | |  リザーブド・コマンドには以下の22個があります。            | |   AGAIN,ALOOP,                            | |   AGAIN%,ALOOP%                            | |   IF,IFELSE,IFEND,                          | |   REPEAT,UNTIL,                            | |   BEGIN,ESC,BEND,                           | |   CASE,CELSE,CEND,                          | |   PUSH,POP,                              | |   ST,ST%                               | |   :=   ;                              | |  以下にその使い方を述べます。                     | |                                     | |  (1) AGAIN……ALOOP回数だけ処理を繰り返します。       | |  ・―――――――――――――――――――・              | |  |  AGAIN(回数)→(処理)→LOOP→  |              | |  |           ↑___|   |              | |  |  (回数だけ繰り返す)。      |              | |  ・―――――――――――――――――――・              | |            プログラム                    | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG1 |         | |  |  2 [ RUN X:=0; |         | |  |  3 AGAIN(10) |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) CR |         | |  |  6 ALOOP ] |         | |  |  7 [ VAR X ] |         | |  |――――――――――――――――――――――――|         | |  |::::::::::::::::::BASIC::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |    10 X=0 |         | |  |    20 FOR I=1 TO 10 |         | |  |    30 X=X+1 |         | |  |    40 PRINT X |         | |  |    50 NEXT I |         | |  |    60 END |         | |  ・――――――――――――――――――――――――・         | |                                     | |  (2) AGAIN%……ALOOP%回数(1バイト)だけ         | |    コマンドを繰り返しまします。                   | |    回数が1バイト型であること以外は、                | |    AGAIN,ALOOPと同じです。                | |            プログラム2                   | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG2 |         | |  |  2 [ RUN X:=0; |         | |  |  3 AGAIN(10%) |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) CR |         | |  |  6 ALOOP% ] |         | |  |  7 [ VAR X ] |         | |  |――――――――――――――――――――――――|         | |  |::::::::::::::::::BASIC::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |    10 X=0 |         | |  |    20 FOR I=1 TO 10 |         | |  |    30 X=X+1 |         | |  |    40 PRINT X |         | |  |    50 NEXT I |         | |  |    60 END |         | |  ・――――――――――――――――――――――――・         | |                                     | |  (3) REPEAT……UNTIL判定か真になるまで、          | |    コマンドを繰り返す。                       | |  ・―――――――――――――――――――・              | |  |                (真)|              | |  | REPEAT→(処理)→UNTIL(判定)→  |              | |  |  ↑___________|    |              | |  |      (偽)          |              | |  ・―――――――――――――――――――・              | |            プログラム3                   | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG3 |         | |  |  2 [ RUN X:=0; |         | |  |  3 REPEAT |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) CR |         | |  |  6 UNTIL(X=10) ] |         | |  |  7 [ VAR X ] |         | |  |――――――――――――――――――――――――|         | |  |::::::::::::::::::BASIC::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |    10 X=0 |         | |  |    20 X=X+1 |         | |  |    30 PRINT X |         | |  |    40 IF X=10 THEN 60 |         | |  |    50 GOTO 20 |         | |  |    60 END |         | |  ・――――――――――――――――――――――――・         | |                                     | |  (4) BEGIN……ESC……BEND                 | |    判定が真になるまで、BEGIN−BENDの間を繰り返す。     | |  ・―――――――――――――――――――・              | |  | BEGIN →処理1―・         |              | |  | ↑       |         |              | |  | |・――――――・ (真)     |              | |  | ||    ・――――――――・  |              | |  | ||    |        |  |              | |  | |・→ESC(判定)→処理2→BEND ・―→|              | |  | |     (偽)    |    |              | |  | ・――――――――――――・    |              | |  ・―――――――――――――――――――・              | |            プログラム4                   | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG4 |         | |  |  2 [ RUN X:=0; |         | |  |  3 BEGIN |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) |         | |  |  6 ESC(X>10) |         | |  |  7 PRS(%" X<=10") CR |         | |  |  8 BEND |         | |  |  9 PRS(%" X>10") ] |         | |  |  10 [ VAR X ] |         | |  |――――――――――――――――――――――――|         | |  |::::::::::::::::::BASIC::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |    10 X=0 |         | |  |    20 X=X+1 |         | |  |    30 PRINT X |         | |  |    40 IF X>10 THEN 70 |         | |  |    50 PRINT "X<=10" |         | |  |    60 GOTO 20 |         | |  |    70 PRINT "X>10" |         | |  |    80 END |         | |  ・――――――――――――――――――――――――・         | |                                     | |  (5) IF……IFEND                        | |    判定か真なら処理を実行します。                  | |  ・―――――――――――――――――――・              | |  |        (真)         |              | |  |    IF(判定)→処理→IFEND→    |              | |  |    (偽)|      ↑     |              | |  |      ・――――――・     |              | |  ・―――――――――――――――――――・              | |            プログラム5                   | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG5 |         | |  |  2 [ RUN X:=0; |         | |  |  3 AGAIN(10) |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) |         | |  |  6 IF(X=4) PRS(%" X=4") |         | |  |  7 IFEND CR |         | |  |  8 ALOOP ] |         | |  |  9 [ VAR X ] |         | |  |――――――――――――――――――――――――|         | |  |::::::::::::::::::BASIC::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |    10 X=0 |         | |  |    20 FOR I=1 TO 10 |         | |  |    30 X=X+1 |         | |  |    40 PRINT X |         | |  |    50 IF X=4 THEN PRINT "X=4" |         | |  |    60 NEXT I |         | |  |    70 END |         | |  ・――――――――――――――――――――――――・         | |                                     | |  (6) IF……IFELSE……IFEND                | |    判定が真なら処理1、偽なら処理2を実行します。          | |  ・―――――――――――――――――――・              | |  |       (真)          |              | |  |   IF(判定)→処理1―・      |              | |  |   (偽)|      |      |              | |  |     ・――・   |      |              | |  |        ↓   ↓      |              | |  |   IFLELSE→処理2 IFEND→    |              | |  ・―――――――――――――――――――・              | |            プログラム6                   | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG6 |         | |  |  2 [ RUN X:=0; |         | |  |  3 AGAIN(10) |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) |         | |  |  6 IF(X=4) PRS(%" X=4") |         | |  |  7 IFELSE PRS(%" X<>4") |         | |  |  8 IFEND CR |         | |  |  9 ALOOP ] |         | |  |  10 [ VAR X ] |         | |  |――――――――――――――――――――――――|         | |  |::::::::::::::::::BASIC::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |    10 X=0 |         | |  |    20 FOR I=1 TO 10 |         | |  |    30 X=X+1 |         | |  |    40 PRINT X |         | |  |    50 IF X=4 THEN PRINT "X=4" |         | |  |     ELSE PRINT "X<>4" |         | |  |    60 NEXT I |         | |  |    70 END |         | |  ・――――――――――――――――――――――――・         | |                                     | |  (7) CASE……CEND                       | |    CELSE……CEND                      | |    CELSE……CEND……CEND                | |    判定が真なら次のコマンドを、                   | |    偽なら次の判定を行ないます。                   | |  ・―――――――――――――――――――・              | |  |      (真)           |              | |  | CASE (判定)→処理1→CEND ―・   |              | |  | (偽) |          |   |              | |  |    ↓ (真)       |   |              | |  | CELSE(判定)→処理2→CEND ―|   |              | |  | (偽) |          |   |              | |  |    ↓ (真)       |   |              | |  | CELSE(判定)→処理3→CEND ―|   |              | |  | (偽) |          |   |              | |  |    ・―→ 処理4→CEND―――→  |              | |  ・―――――――――――――――――――・              | |  注)CELSE の数はいくつでも可能ですが、                | |    最後の分岐は必ず、…CELSE …CEND…CEND              | |    としてください。                         | |            プログラム7                   | |  ・――――――――――――――――――――――――・         | |  |::::::::::::::::::::Ade::::::::::::::::::::::|         | |  |――――――――――――――――――――――――|         | |  |  1 PROG7 |         | |  |  2 [ RUN X:=0; |         | |  |  3 AGAIN(10) |         | |  |  4 X:=X+1; |         | |  |  5 PRINT(X) |         | |  |  6 CASE(X<5) PRS(%" X<5") CEND |         | |  |  7 CELSE(X=5) PRS(%" X=5") CEND |         | |  |  8 CELSE(X<8) PRS(%" 5ED[RET]       |                   | |  |  #            |                   | |  ・――――――――――――――・                   | |                                     | |(2)DIR(ディレクトリ)                        | |  登録されているユーザーコマンドをビルトイン・コマンドにします。    | |                                     | |(3)SYSTEM(システム)                       | |  新しく登録されたビルトイン・コマンドを含む、             | |  すべてのシステム・プログラム(Ade本体)を             | |  カセット出力できる形にし、そしてそのエリアを表示します。       | |  ・――――――――――――――・                   | |  |  >SYSTEM[RET]     |                   | |  |  *SAVE          |                   | |  |   8100-9A23       |                   | |  |  *W8100,9A23[RET]   |                   | |  ・――――――――――――――・                   | |                                     | |(4) BASIC                             | |  BASICモードに入ります。                     | |                                     | |(5) DIRU(ディレクトリ・ユーザー)                 | |  ユーザーコマンドのみディレクトリを出力します。            | |                                     | |(6)MON                                | |  モニタ・モードに入ります。                      | |                                     | |(7)LPR(プリンタON)                        | |  プリンタをONします。                        | |                                     | |(8)COM(コンパイル)                         | |  デバック付コンパイルを行ないます。                  | |                                     | |(9)HCOM(ハイスピード・コンパイル)                 | |  デバッグなしのコンパイルを行ないます。                | |                                     | |(10)RCOM(リファレンス・コンパイル)                 | |  リファレンス付デバック付コンパイルを行ないます。           | |                                     | |(11)RHCOM(リファレンス・ハイスピード・コンパイル)         | |  リファレンス付デバックなしのコンパイルを行ないます。         | |                                     | |(12)TRON(トレースON)                       | |  トレースをONします。                        | |                                     | |(13)TROFF(トレースOFF)                     | |  トレースをOFFします。                       | |                                     | |(14)HELP(ヘルプ)                          | |  コマンドのメッセージを出力します。                  | |                                     | |(15)FORGET                             | |  ビルトイン・コマンドをすべて切りすてるコマンドです。         | |                                     | |・―――――――――――――――――――――――――――――――――――・| ||■4.システム変数■■■■■■■■■■■■■■■■■■■■■■■■■■|| |・―――――――――――――――――――――――――――――――――――・| |システム変数は以下の3種類です。                     | |(1)SPEED(スピード)                        | |  デバック付でコンパイルしたオブジェクトの実行のスピードを       | |  変化させるコマンドです。                       | |                                     | |   >SPEED:=10;                             | |                                     | |(2)SMAX(スタック・マックス)                    | |  スタックの上限の値です。                       | |                                     | |   >SMAX:=$A100;                            | |                                     | |(3)SMIN(スタック・ミニマム)                    | |                                     | |   >SMIN:=$D000;                            | |                                     | |  スタックの下限の値です。                       | |                                     | |・―――――――――――――――――――――――――――――――――――・| ||■5.宣言コマンド■■■■■■■■■■■■■■■■■■■■■■■■■■|| |・―――――――――――――――――――――――――――――――――――・| |宣言コマンドは、変数または配列を定義するコマンドで、2種類あります。   | |(1)VAR(変数宣言コマンド)                      | |  変数を定義するコマンドです。                     | |                                     | |   [ VAR ABC CONT% ]                          | |                                     | |  上記の例はABCを2バイト変数に、                  | |  COUNT%を1バイト変数に定義しています。             | |                                     | |(2)DIM(配列宣言コマンド)                      | |  配列を竃言するコマンドです。                     | |                                     | |   [ DIM A 10 B% 20% ]                         | |                                     | |  上記の例はAを2バイト配列で10要素、                 | |  B%を1バイト配列で20要素に定義しています。             | |                                     | |注:変数はコマンドと区別するために必ず宣言しなければいけません。     | |  宣言する場所は、変数を使用する前でも後でもかまいません。       | |                                     | |・―――――――――――――――――――――――――――――――――――・| ||■6.ビルトインコマンド■■■■■■■■■■■■■■■■■■■■■■■|| |・―――――――――――――――――――――――――――――――――――・| |ユーザーがBUILTINコマンドにより拡張したコマンドです。       | |今回のAde Ver.1.0におけるビルトイン・コマンドは            | |以下の14個がすでに定義されています。                   | |(1)PRINT                              | |  2バイト型の出力                           | |  例:PRINT (100-1)                           | |                                     | |(2)PRINT%                             | |  1バイト型の出力                           | |  例:PRINT%(90%)                            | |                                     | |(3)PRHEX                              | |  2バイトの16進出力                          | |  例:PRHEX(1023)                            | |                                     | |(4)PRHEX%                             | |  1バイト型の16進出力                         | |  例:PRHEX%(255%)                           | |                                     | |(5)PUSHDE                             | |  DEレジスタの内容をスタックに積みます。                | |  例:PUSHDE A;=ST;                           | |                                     | |(6)PUSHBC                             | |  BCレジスタの内容をスタックに積みます。                | |                                     | |(7)POPDE                              | |  スタックの内容をDEレジスタに下します。                | |  PUSH K POPDE                             | |                                     | |(8)POPBC                              | |  スタックの内容をBCレジスタに下します。                | |                                     | |(9)PEEK                               | |  メモリの読み出し。                          | |  A%:=PEEK($EA00);                           | |                                     | |(10)POKE                               | |  メモリの書き込み。                          | |  POKE($EA00,$28%);                           | |                                     | |(11)PRS                                | |  文字列の出力                             | |  0までスタックの内容を出力する。                   | |  PES ( % "START")                           | |                                     | |(12)CR                                 | |  キャリッジ・リターン(行変え)                    | |                                     | |(13)DUP                                | |  スタックに入っている内容(2バイト)をコピーします。         | |                                     | |(14)DUP%                               | |  スタックに入っている内容(1バイト)をコピーします。         | |                                     | |(15)演算子表(表2)                           | |  ・―――――――――――――――――――――――――――・      | |  |■演算子■|■■使用例■■|■■型■■|■■機■能■■|      | |  |―――――+―――――――+―――――+―――――――|      | |  |  +   | X:=X+1;   | 2バイト | 加算演算子 |      | |  |  -   | X:=Y-X;   |  〃  | 減 〃   |      | |  |  *   | X:=3*Y;   |  〃  | 乗 〃   |      | |  |  /   | X:=Y/2;   |  〃  | 除 〃   |      | |  |  =   | X=Y     |  〃  | 比較演算子 |      | |  |  <   | X   | X>Y     |  〃  |   〃   |      | |  |  =<  | X=  | X=>Y    |  〃  |   〃   |      | |  |  <>  | X<>Y    |  〃  |   〃   |      | |  |  +%  | X%:=X%+%1%; | 1バイト | 加算演算子 |      | |  |  -%  | X%:=Y%-%X%; |  〃  | 減 〃   |      | |  |  *%  | X%:=3%*%Y%; |  〃  | 乗 〃   |      | |  |  /%  | X%:=Y%/%2%; |  〃  | 除 〃   |      | |  |  =%  | X%=%Y%   |  〃  | 比較演算子 |      | |  |  <%  | X%<%Y%   |  〃  |   〃   |      | |  |  >%  | X%>%Y%   |  〃  |   〃   |      | |  |  =<%  | X%=<%Y%   |  〃  |   〃   |      | |  |  =>%  | X%=>%Y%   |  〃  |   〃   |      | |  |  <>%  | X%<>%Y%   |  〃  |   〃   |      | |  ・―――――――――――――――――――――――――――・      | |                                     | |・―――――――――――――――――――――――――――――――――――・| ||■擬似コマンド■■■■■■■■■■■■■■■■■■■■■■■■■■■■|| |・―――――――――――――――――――――――――――――――――――・| |(1)!(ストア)                             | |  !コマンドは、プログラムの中に機械語を直接書き込みます。       | |  例:[ BA !C3810 ]                           | |                                     | |(2)”(ストリング)                           | |  ”コマンドは『”』でかこまれた内容をスタックに積みます。       | |  例:PRS ( % "START" )                        | |  (注:PRSで使うときはENDマークの『%』をわすれずに)      | |  例:X:="ET";                             | |   (X:=$4554; と同じ)                        | |                                     | |(3)#(アドレス)                            | |  #コマンドは、コマンドのエントリ・アドレスを             | |  直接オブジェクトに落します。                     | |  例:!CC #SUB1                             | |   (内容:CALL Z,SUN1)                        | |                                     | |(4)’(コメント)                            | |  コメント文となります。                        | |  [ BD !C38100'JP 81H ]                         | |  (注:コメント文は、’から改行(0D)までがコメントとして扱われます。 | |                                     | ・―――――――――――――――――――――――――――――――――――――・                エラーメッセージ ・―――――――――――――――――――――――――――――――――――――・ |1.OVER FLOW ERROR     数が 65535を越えた。             | |              例〉A:=65536;                 | |                                     | |2.HEX ERROR        16進数の扱いがおかしい。           | |              例)A:=$A00G;                 | |                                     | |3.CANNOT VAR ERROR    変数定義がおかしい。             | |              例)[ VAR 1A ]                | |                                     | |4.NESTING ERROR      ネスティングがおかしい。           | |              例)[ SUB A:=A+1 ]              | |                                     | |5.NOT DIFINDED ERROR   定義されていないコマンドを呼んだ。      | |              例)[ RUN TAB ]                | |                                     | |6.NOT 1BYT HENSU ERROR  1バイト配列定義のときに 255を越えた。    | |              例)[ DIM A% 256]               | |                                     | |7.NO COM : ERROR     ":"が単独で使われた。            | |              例)[ RUN SUB1:SUB2 ]             | |                                     | |8.STACK UNDER FLOW    スタックがUNDER FLOWした。     | |              例)AGAIN(10) PRINT ALOOP           | |                                     | |9.STACK OVER FLOW     スタックがOVER FLOWした。      | |              例)REPEAT 1 UNTIL (2=1)           | |                                     | |10.ADDR UNDER FLOW     $8000以下の所からFFが実行された。      | |               (暴走防止のため)             | |              例)!C30200                  | |                                     | |11.ADDR OVER FLOW     $E000以上の所からFFが実行された。      | |              例)POKE ($F010,$FF%) !C310F0         | |                                     | |12.SP OVER FLOW      スタックがOVER FLOWした。      | |                                     | |13.SP UNDER FLOW      スタックがUNDER FLOWした。     | |                                     | |14.QUATAION ERROR     クオーテエイションがおかしい。        | |              例)[ RUN PRS(%,"TEST) ]           | |                                     | |15.DUBL COMAND ERROR    コマンドを2重定義した。           | |                                     | |16.SOUCE IS NOTHING ERROR ソースがなにもないのにコンパイルしようとした。| |                                     | |17.NOT COMPILE ERROR    コンパイルされていないのに          | |              ビルトインしようとした。           | ・―――――――――――――――――――――――――――――――――――――・